package terrforming.space;

import java.io.File;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import terrforming.space.objects.CosmicDust;
import terrforming.space.objects.CosmicObject;
import terrforming.space.objects.Star;
import terrforming.space.objects.Universe;

public class ConfigReader {
    
    Universe unvrs = Universe.getInstance();

public void read(){
  try {
  File file = new File("config.xml");
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.parse(file);
  doc.getDocumentElement().normalize();
  NodeList nodeLst = doc.getElementsByTagName("star");
  for (int s = 0; s < nodeLst.getLength(); s++) {
    Node fstNode = nodeLst.item(s);
    if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
      Element fstElmnt = (Element) fstNode;
      Star star = new Star();
      //get mass
      NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("mass");
      Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
      NodeList fstNm = fstNmElmnt.getChildNodes();
      System.out.println("mass: "  + ((Node) fstNm.item(0)).getNodeValue());
      star.setM(new Float(((Node) fstNm.item(0)).getNodeValue()));
      //get xposition
      fstNmElmntLst = fstElmnt.getElementsByTagName("xposition");
      fstNmElmnt = (Element) fstNmElmntLst.item(0);
      fstNm = fstNmElmnt.getChildNodes();
      System.out.println("xposition: "  + ((Node) fstNm.item(0)).getNodeValue());
      star.setX(new Float(((Node) fstNm.item(0)).getNodeValue()));
      //get ypostion
      fstNmElmntLst = fstElmnt.getElementsByTagName("yposition");
      fstNmElmnt = (Element) fstNmElmntLst.item(0);
      fstNm = fstNmElmnt.getChildNodes();
      System.out.println("yposition: "  + ((Node) fstNm.item(0)).getNodeValue());
      star.setY(new Float(((Node) fstNm.item(0)).getNodeValue()));
      //get radius
      fstNmElmntLst = fstElmnt.getElementsByTagName("radius");
      fstNmElmnt = (Element) fstNmElmntLst.item(0);
      fstNm = fstNmElmnt.getChildNodes();
      System.out.println("radius: "  + ((Node) fstNm.item(0)).getNodeValue());
      star.setR(new Float(((Node) fstNm.item(0)).getNodeValue()));
      unvrs.getObjects().add(star);
    }
  }
  //get stardust count
  nodeLst = doc.getElementsByTagName("stardust");
  Node fstNode = nodeLst.item(0);
  if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
      Element fstElmnt = (Element) fstNode;
      //get count
      NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("count");
      Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
      NodeList fstNm = fstNmElmnt.getChildNodes();
      int count = new Integer(((Node) fstNm.item(0)).getNodeValue());
      for (int i=0; i<count; i++){
            try {
                unvrs.getCd().add(new CosmicDust());
            } catch (Exception ex) {
                System.err.println(ex);
            }
        }
  }
  } catch (Exception e) {
    e.printStackTrace();
  }

 }

}